<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES6 允许使用[箭头] （=>） 定义函数
        // 声明函数
        // let fn = function(){

        // }
        // let fn = (a,b) => {
        //     return a+b;
        // }
        // 调用函数
        // let result = fn(1,2);
        // console.log(result);

        // 1、 this 是静态的 , this始终指向函数声明时所在作用域下的 this的值
        function getName(){
            console.log(this.name);
        }
        let getName2 = () => {
            console.log(this.name);
        }

        // 设置window 对象的 name 属性
        window.name = '尚硅谷';
        const school = {
            name:'ATGUIGU'
        }

        // 直接调用
        // getName();  //尚硅谷
        // getName2();  //尚硅谷

        // call 方法调用
        // getName.call(school);   //ATGUIGU
        // getName2.call(school);   //尚硅谷

        // 2、不能作为构造函数实例化对象
        // let Person = (name,age) => {
        //     this.name = name;
        //     this.age = age;
        // }
        // let me = new Person('xiao',20);
        // console.log(me);

        // 3、不能使用 arguments 变量
        // let fn = () => {
        //     console.log(arguments);
        // }
        // fn(1,2,3);

        // 4、箭头函数简写
            // (1) 省略小括号，当形参有且只有一个
            let add = n => {
                return n+n;
            }
            console.log(add(9));
            // (2) 省略花括号,当代码体只有一条语句的时候 ,此时return也必须省略
            //     而且语句的执行结果就是函数的返回值
            let pow = n => n*n;
            console.log(pow(6));
    </script>
</body>
</html>